package game;

import java.util.InputMismatchException;
import java.util.Scanner;
import game.Item;

public class InventoryManager {

    // 使用道具的方法
    public static void useItem(Player player, Scanner scanner) {

        System.out.println("请选择您的道具 (输入0取消)：");
        String[] itemNames = player.inventory.keySet().toArray(new String[0]);
        for (int i = 0; i < itemNames.length; i++) {
            System.out.println((i + 1) + ". " + itemNames[i] + " x" + player.inventory.get(itemNames[i]));
        }

        try {
            int itemChoice = scanner.nextInt();
            if (itemChoice == 0) {
                System.out.println("取消使用道具。");
                return;
            }
            if (itemChoice < 1 || itemChoice > itemNames.length) {
                System.out.println("无效的道具选择！");
                return;
            }

            // 使用物品
            String selectedItemName = itemNames[itemChoice - 1];
            Item selectedItem = ItemRegistry.getItemByName(selectedItemName);

            // 增加空值检查

            if (selectedItem == null) {
                System.out.println("未找到道具：" + selectedItemName + "。请确保道具名称正确并已注册。");
                return;
            }

            // 根据 selectedItem.type 判断道具类型并执行相应操作
            if (selectedItem.type.equals("healing")) {
                player.hp += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，恢复了 " + selectedItem.effect + " 点生命值！");
            } else if (selectedItem.type.equals("attack")) {
                player.attack += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，提升了 " + selectedItem.effect + " 点攻击力！");
            } else if (selectedItem.type.equals("防御")) {
                player.defense += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，提升了 " + selectedItem.effect + " 点防御力！");
            } else if (selectedItem.type.equals("体力")) {
                player.stamina += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，提升了 " + selectedItem.effect + " 点体力！");
            } else if (selectedItem.type.equals("闪避")) {
                player.dodge += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，提升了 " + selectedItem.effect + " 点闪避！");
            } else if (selectedItem.type.equals("智力")) {
                player.intelligence += selectedItem.effect;
                System.out.println("你使用了 " + selectedItem.name + "，提升了 " + selectedItem.effect + " 点智力！");
            } else if (selectedItem.type.equals("damage")) {
                game.Monster monster = game.Game.findCurrentMonster(); // 正确访问findCurrentMonster方法
                if (monster != null) {
                    monster.takeDamage(selectedItem.effect); // 对怪物应用伤害
                    System.out.println("您使用了 " + selectedItem.name + " 并对 " + monster.name + " 造成了 " + selectedItem.effect + " 点伤害！");
                }
            } else {
                System.out.println("未知的道具类型！");
            }

            player.removeFromInventory(selectedItemName, 1); // 使用后从背包移除一个单位的物品
        } catch (InputMismatchException e) {
            System.out.println("请输入有效的数字！");
            scanner.nextLine(); // Consume the wrong input before retrying or exiting
        }
    }

}
